
 1000  *SAVE ROBISONS.8X8
 1010  *--------------------------------
 1020  *   MODIFIED FROM ORIGINAL PROGRAM
 1030  *   BY ARCH D. ROBISON, BURROUGHS CORP.
 1040  *      EDN, OCTOBER 13, 1983.
 1050  *--------------------------------
 1060  *   ENTER WITH (A)=MULTIPLIER # 1
 1070  *              (X)=MULTIPLIER #2
 1080  *   EXIT WITH (A)=PRODUCT HI BYTE
 1090  *             (X)=PRODUCT LO BYTE
 1100  *--------------------------------
 1110  PROD   .EQ $06      PRODUCT TEMP OF M1*M2 (LOW BYTE)
 1120  M2     .EQ $07      TEMP FOR M2 SAVE
 1130  *--------------------------------
 1140  MULT8  TAY          SAVE M1 IN Y
 1150         STX M2       SAVE M2
 1160         AND M2       CHECK IF BOTH FACTORS ARE ODD
 1170         LSR          SET CARRY <--> BOTH ODD
 1180         LDA SQL,X    ADD (X*X)/2 AND (Y*Y)/2
 1190         ADC SQL,Y
 1200         STA PROD     SAVE LO BYTE OF PRODUCT
 1210         LDA SQH,X
 1220         ADC SQH,Y
 1230         TAX          SAVE HI BYTE OF PRODUCT
 1240         TYA          GET M1 BACK
 1250         SEC
 1260         SBC M2       FIND M1 - M2
 1270         BCS .1       M1 >= M2, CONTINUE
 1280         SBC #0       M1 < M2, FORM 2'S COMPLEMENT
 1290         EOR #$FF
 1300  .1     TAY          USE ABS(M1-M2) AS INDEX
 1310         LDA PROD        TO FIND SQUARE/2 IN TABLE
 1320         SBC SQL,Y    NOW SUBTRACT (X-Y)*(X-Y)
 1330         STA PROD     SAVE LO BYTE OF RESULT
 1340         TXA          HI BYTE FROM PREVIOUS SUM
 1350         SBC SQH,Y
 1360         LDX PROD     LO BYTE OF FINAL PRODUCT
 1370         RTS
 1380  *--------------------------------
 1390         .OR $900     PAGE BOUNDARY TO SAVE MAX 6 CYCLES
 1400  *--------------------------------
 1410  SQL
 1420   .DA #0,#0,#2,#4,#8,#12,#18,#24
 1430   .DA #32,#40,#50,#60,#72,#84,#98,#112
 1440   .DA #128,#144,#162,#180,#200,#220,#242,#264
 1450   .DA #288,#312,#338,#364,#392,#420,#450,#480
 1460   .DA #512,#544,#578,#612,#648,#684,#722,#760
 1470   .DA #800,#840,#882,#924,#968,#1012,#1058,#1104
 1480   .DA #1152,#1200,#1250,#1300,#1352,#1404,#1458,#1512
 1490   .DA #1568,#1624,#1682,#1740,#1800,#1860,#1922,#1984
 1500   .DA #2048,#2112,#2178,#2244,#2312,#2380,#2450,#2520
 1510   .DA #2592,#2664,#2738,#2812,#2888,#2964,#3042,#3120
 1520   .DA #3200,#3280,#3362,#3444,#3528,#3612,#3698,#3784
 1530   .DA #3872,#3960,#4050,#4140,#4232,#4324,#4418,#4512
 1540   .DA #4608,#4704,#4802,#4900,#5000,#5100,#5202,#5304
 1550   .DA #5408,#5512,#5618,#5724,#5832,#5940,#6050,#6160
 1560   .DA #6272,#6384,#6498,#6612,#6728,#6844,#6962,#7080
 1570   .DA #7200,#7320,#7442,#7564,#7688,#7812,#7938,#8064
 1580   .DA #8192,#8320,#8450,#8580,#8712,#8844,#8978,#9112
 1590   .DA #9248,#9384,#9522,#9660,#9800,#9940,#10082,#10224
 1600   .DA #10368,#10512,#10658,#10804,#10952,#11100,#11250,#11400
 1610   .DA #11552,#11704,#11858,#12012,#12168,#12324,#12482,#12640
 1620   .DA #12800,#12960,#13122,#13284,#13448,#13612,#13778,#13944
 1630   .DA #14112,#14280,#14450,#14620,#14792,#14964,#15138,#15312
 1640   .DA #15488,#15664,#15842,#16020,#16200,#16380,#16562,#16744
 1650   .DA #16928,#17112,#17298,#17484,#17672,#17860,#18050,#18240
 1660   .DA #18432,#18624,#18818,#19012,#19208,#19404,#19602,#19800
 1670   .DA #20000,#20200,#20402,#20604,#20808,#21012,#21218,#21424
 1680   .DA #21632,#21840,#22050,#22260,#22472,#22684,#22898,#23112
 1690   .DA #23328,#23544,#23762,#23980,#24200,#24420,#24642,#24864
 1700   .DA #25088,#25312,#25538,#25764,#25992,#26220,#26450,#26680
 1710   .DA #26912,#27144,#27378,#27612,#27848,#28084,#28322,#28560
 1720   .DA #28800,#29040,#29282,#29524,#29768,#30012,#30258,#30504
 1730   .DA #30752,#31000,#31250,#31500,#31752,#32004,#32258,#32512
 1740  SQH
 1750   .DA /0,/0,/2,/4,/8,/12,/18,/24
 1760   .DA /32,/40,/50,/60,/72,/84,/98,/112
 1770   .DA /128,/144,/162,/180,/200,/220,/242,/264
 1780   .DA /288,/312,/338,/364,/392,/420,/450,/480
 1790   .DA /512,/544,/578,/612,/648,/684,/722,/760
 1800   .DA /800,/840,/882,/924,/968,/1012,/1058,/1104
 1810   .DA /1152,/1200,/1250,/1300,/1352,/1404,/1458,/1512
 1820   .DA /1568,/1624,/1682,/1740,/1800,/1860,/1922,/1984
 1830   .DA /2048,/2112,/2178,/2244,/2312,/2380,/2450,/2520
 1840   .DA /2592,/2664,/2738,/2812,/2888,/2964,/3042,/3120
 1850   .DA /3200,/3280,/3362,/3444,/3528,/3612,/3698,/3784
 1860   .DA /3872,/3960,/4050,/4140,/4232,/4324,/4418,/4512
 1870   .DA /4608,/4704,/4802,/4900,/5000,/5100,/5202,/5304
 1880   .DA /5408,/5512,/5618,/5724,/5832,/5940,/6050,/6160
 1890   .DA /6272,/6384,/6498,/6612,/6728,/6844,/6962,/7080
 1900   .DA /7200,/7320,/7442,/7564,/7688,/7812,/7938,/8064
 1910   .DA /8192,/8320,/8450,/8580,/8712,/8844,/8978,/9112
 1920   .DA /9248,/9384,/9522,/9660,/9800,/9940,/10082,/10224
 1930   .DA /10368,/10512,/10658,/10804,/10952,/11100,/11250,/11400
 1940   .DA /11552,/11704,/11858,/12012,/12168,/12324,/12482,/12640
 1950   .DA /12800,/12960,/13122,/13284,/13448,/13612,/13778,/13944
 1960   .DA /14112,/14280,/14450,/14620,/14792,/14964,/15138,/15312
 1970   .DA /15488,/15664,/15842,/16020,/16200,/16380,/16562,/16744
 1980   .DA /16928,/17112,/17298,/17484,/17672,/17860,/18050,/18240
 1990   .DA /18432,/18624,/18818,/19012,/19208,/19404,/19602,/19800
 2000   .DA /20000,/20200,/20402,/20604,/20808,/21012,/21218,/21424
 2010   .DA /21632,/21840,/22050,/22260,/22472,/22684,/22898,/23112
 2020   .DA /23328,/23544,/23762,/23980,/24200,/24420,/24642,/24864
 2030   .DA /25088,/25312,/25538,/25764,/25992,/26220,/26450,/26680
 2040   .DA /26912,/27144,/27378,/27612,/27848,/28084,/28322,/28560
 2050   .DA /28800,/29040,/29282,/29524,/29768,/30012,/30258,/30504
 2060   .DA /30752,/31000,/31250,/31500,/31752,/32004,/32258,/32512

